class HuskGunClusterWProjectile_Strong extends HuskGunClusterWProjectile;

//var() class<Projectile> ProjectileClass;
//var() int NumProjectiles;
//var     Emitter FlameTrail;
//var     xEmitter    Trail;

simulated function Explode(vector HitLocation, vector HitNormal)
{
	local Controller C;
	local PlayerController  LocalPlayer;

	local vector start;
	local rotator rot;
	local int i;
	local Projectile NewChunk;
	
	bHasExploded = True;    

	PlaySound(ExplosionSound,,2.0);

	if ( EffectIsRelevant(Location,false) )
	{
		Spawn(Class'FlameImpact',,, HitLocation, rotator(vect(0,0,1)));
		Spawn(ExplosionDecal,self,,HitLocation, rotator(-HitNormal));
	}

	BlowUp(HitLocation);
	
	start = Location + 10 * HitNormal;
	if ( Role == ROLE_Authority )
	{   
		for (i=0; i< NumProjectiles; i++)
		{
			rot = Rotation;
			rot.yaw += FRand()*10000-3000;
			rot.pitch += FRand()*10000-3000;
			rot.roll += FRand()*10000-3000;
			NewChunk = Spawn(ProjectileClass,Instigator, '', Start, rot);
		}
	}
	
	Destroy();

	// Shake nearby players screens
	LocalPlayer = Level.GetLocalPlayerController();
	if ( (LocalPlayer != None) && (VSize(Location - LocalPlayer.ViewTarget.Location) < DamageRadius) )
		LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime);

	for ( C=Level.ControllerList; C!=None; C=C.NextController )
		if ( (PlayerController(C) != None) && (C != LocalPlayer)
			&& (VSize(Location - PlayerController(C).ViewTarget.Location) < DamageRadius) )
			C.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime);
}

defaultproperties
{
     NumProjectiles=6
     ArmDistSquared=100.000000
     ImpactDamage=2500
     Damage=2000.000000
     DamageRadius=400.000000
     StaticMesh=StaticMesh'EffectsSM.Weapons.Ger_Tracer_Ball'
     DrawScale3D=(X=100.000000,Y=100.000000,Z=100.000000)
     Skins(0)=Shader'SCTextures.ImpFireBallTexture'
     CollisionRadius=25.000000
     CollisionHeight=25.000000
}
